package qc.module.qms.dto.alarm;

import lombok.Data;
import qc.common.core.enums.qms.QmsAlarmLevelEnum;
import qc.common.core.enums.qms.QmsAlarmStatusEnum;
import qc.common.core.enums.qms.QmsPointValueFieldEnum;

/**
 * QMS点号数据值一条告警规则的判定结果，一个时间点的点号数据判定结果和防误处理结果
 *
 * @author QuCheng Tech
 * @since 2025/10/20
 */
@Data
public class QmsPointDataValueAlarmRuleJudgeResultDto {
    /**
     * 告警规则ID
     */
    private String alarmRuleId;

    /**
     * 告警规则名称
     */
    private String alarmRuleName;

    /**
     * 错误信息；用于判定是否告警的输入条件错误或处理过程中的异常提示信息
     */
    private String errorMsg;

    /**
     * 是否触发告警，触发任意一条告警规则即为true，不管告警的等级
     */
    private boolean hasTriggerAlarm;

    /**
     * 触发告警的信息内容
     */
    private String alarmMsg;

    /**
     * 告警等级，默认为 NONE(0, "未触发")
     */
    private QmsAlarmLevelEnum alarmLevel;

    /**
     * 告警状态
     */
    private QmsAlarmStatusEnum alarmStatus;

    /**
     * 是否触发防误处理，触发任意一条告警规则的防误处理即为true，不管告警的等级
     */
    private boolean hasTriggerErrorProof;

    /**
     * 触发防误处理的数据值字段
     */
    private QmsPointValueFieldEnum triggerErrorProofValueField;

    /**
     * 触发防误处理前的数据值，为NaN表示未设置
     */
    private double errorProofRawDataValue;

    /**
     * 触发防误处理后设置的数据值，为NaN表示未设置
     */
    private double errorProofSetDataValue;

    /**
     * 触发防误处理后设置数据值的提示信息，指示设置的数据值的来源和对应数据时标等信息
     */
    private String errorProofSetMsg;
}
